package com.azier.influxdb.model;

import com.azier.influxdb.annotation.MyColumn;
import lombok.Getter;
import lombok.Setter;

/**
 * influxdb函数值默认接收字段
 */
@Getter
@Setter
public class BaseInfluxModel {
    /**
     * 非空字段数量
     */
    @MyColumn(name = "count")
    private Integer count;

    /**
     * 去重后的值
     */
    @MyColumn(name = "distinct")
    private Double distinct;

    /**
     * 字段值覆盖的曲面的面积之和
     */
    @MyColumn(name = "integral")
    private Double integral;

    /**
     * 算术平均值
     */
    @MyColumn(name = "mean")
    private Double mean;

    /**
     * 中间值
     */
    @MyColumn(name = "median")
    private Double median;

    /**
     * 常用值(重复最多)
     */
    @MyColumn(name = "mode")
    private Double mode;

    /**
     * 最大值和最小值之间的差值
     */
    @MyColumn(name = "spread")
    private Double spread;

    /**
     * 标准差
     */
    @MyColumn(name = "stddev")
    private Double stddev;

    /**
     * 字段所有值的和
     */
    @MyColumn(name = "sum")
    private Double sum;

    /**
     * 最小的值集合
     */
    @MyColumn(name = "bottom")
    private Double bottom;

    /**
     * 最早时间戳的值
     */
    @MyColumn(name = "first")
    private Double first;

    /**
     * 最新时间戳的值
     */
    @MyColumn(name = "last")
    private Double last;

    /**
     * 最大值
     */
    @MyColumn(name = "max")
    private Double max;

    /**
     * 最小值
     */
    @MyColumn(name = "min")
    private Double min;

    /**
     * 排位值
     */
    @MyColumn(name = "percentile")
    private Double percentile;

    /**
     * 随机样本值
     */
    @MyColumn(name = "sample")
    private Double sample;

    /**
     * 最大的值集合
     */
    @MyColumn(name = "top")
    private Double top;

    /**
     * 绝对值
     */
    @MyColumn(name = "abs")
    private Double abs;

    /**
     * 反余弦
     */
    @MyColumn(name = "acos")
    private Double acos;

    /**
     * 反正弦
     */
    @MyColumn(name = "asin")
    private Double asin;

    /**
     * 反正切
     */
    @MyColumn(name = "atan")
    private Double atan;

    /**
     * y/x以弧度表示的反正切
     */
    @MyColumn(name = "atan2")
    private Double atan2;

    /**
     * 四舍五入到最接近的整数的后续值
     */
    @MyColumn(name = "ceil")
    private Integer ceil;

    /**
     * 正弦
     */
    @MyColumn(name = "sin")
    private Double sin;

    /**
     * 余弦
     */
    @MyColumn(name = "cos")
    private Double cos;

    /**
     * 正切
     */
    @MyColumn(name = "tan")
    private Double tan;

    /**
     * 后续字段值的总计
     */
    @MyColumn(name = "cumulative_sum")
    private Double cumulativeSum;

    /**
     * 在一个series中的变化率
     */
    @MyColumn(name = "derivative")
    private Double derivative;

    /**
     * 连续的时间值之间的差异
     */
    @MyColumn(name = "difference")
    private Double difference;

    /**
     * 字段在连续的时间间隔间的差异，间隔单位可选，默认为1纳秒
     */
    @MyColumn(name = "elapsed")
    private Double elapsed;

    /**
     * 指数
     */
    @MyColumn(name = "exp")
    private Double exp;

    /**
     * 向下舍入到最接近的整数的后续值
     */
    @MyColumn(name = "floor")
    private Integer floor;

    /**
     * 自然对数
     */
    @MyColumn(name = "ln")
    private Double ln;

    /**
     * 基数为b的字段值的对数
     */
    @MyColumn(name = "log")
    private Double log;

    /**
     * 基数为2的字段值的对数
     */
    @MyColumn(name = "log2")
    private Double log2;

    /**
     * 基数为10的字段值的对数
     */
    @MyColumn(name = "log10")
    private Double log10;

    /**
     * 一个连续字段值的移动平均值
     */
    @MyColumn(name = "moving_average")
    private Double movingAverage;

    /**
     * 一个series中的一个字段中值的变化的非负速率
     */
    @MyColumn(name = "non_negative_derivative")
    private Double nonNegativeDerivative;

    /**
     * 后续字段值之间减法的非负结果
     * 减法的非负结果包括正差异和等于零的差异
     */
    @MyColumn(name = "non_negative_difference")
    private Double nonNegativeDifference;

    /**
     * x幂
     */
    @MyColumn(name = "pow")
    private Double pow;

    /**
     * 四舍五入到最接近的整数
     */
    @MyColumn(name = "round")
    private Integer round;

    /**
     * 平方根
     */
    @MyColumn(name = "sqrt")
    private Double sqrt;

}
